package com.youxue.dao;

import com.youxue.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {
    int deleteByPrimaryKey(Integer userId);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer userId);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);

    int updatePasswordByemail(User user);

    User selectUserIdByEmail(User user);

    User selectUserByEmail(@Param(value = "email") String email);

    User selectUserIdByPhone(User user);

    int insertAUser(User user);

    User selectAUserPartInfo(Integer userId);

    double selectAUserBalance(Integer userId);

    int updateAUserBalance(User user);

    int addAUserBalanceByUserId(@Param(value = "userId")Integer userId,@Param(value = "money") Double money);
    //后台使用

    /**
     * 超级管理员查询其管理的所有用户总数（包含管理员）
     *
     * @return
     */
    int selectUserTotal();

    /**
     * 普通管理员查询其管理的所有用户总数（包含管理员）
     *
     * @return
     */
    int selectUserTotalByCommonAdmin();

    /**
     * 超级管理员
     * 分页查询用户列表
     *
     * @param pageOffset 开始的位置
     * @param pageSize   一次查询的个数
     * @return 学生列表
     */
    List<User> selectUserByPage(@Param(value = "pageOffset") Integer pageOffset,

                                @Param(value = "pageSize") Integer pageSize);

    /**
     * 普通管理员
     * 分页查询用户列表
     *
     * @param pageOffset 开始的位置
     * @param pageSize   一次查询的个数
     * @return 学生列表
     */
    List<User> selectUserByPageByCommonAdmin(@Param(value = "pageOffset") Integer pageOffset,

                                             @Param(value = "pageSize") Integer pageSize);

    /**
     * 邮箱号，电话号码精确匹配查询
     *
     * @param keyword
     * @return
     */
    User selectUserByRetrieval(@Param(value = "keyword") String keyword);

    /**
     * 查询一个用户部分信息
     *
     * @param userId
     * @return
     */
    User selectAUserInfo(Integer userId);
}